/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.sgs.mb;

import br.com.sgs.auxiliar.ProcessoAux;
import br.com.sgs.auxiliar.StatusAux;
import br.com.sgs.bundle.MessageBundleLoader;
import br.com.sgs.entity.Etapa;
import br.com.sgs.entity.Processo;
import br.com.sgs.fachada.*;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

/**
 *
 * @author Eric
 */
@ManagedBean(name="etapaMB")
@ViewScoped
public class EtapaMB implements Serializable {
    
    
    private List<Etapa> lsetapa = new ArrayList<Etapa>();
    
    private Etapa etapaselecionada;
       
    //parametro de busca
    private String busca;
    
    //visualizar
    private String strdescricao;
    private String strstatus;
    private String strdepartamento;
    private String strprocesso;
    private Date strdtcriacao;
    
    private List<Processo> lsprocessoadd = new ArrayList<Processo>();
    
    
    /**
     * Creates a new instance of InstituicaoNew
     */
    public EtapaMB() {
    }
    
    @PostConstruct
    public void init() {
        try {

            EtapaIFachada ifach = new EtapaFachada();
            setLsetapa(ifach.findEtapa());
            
        } catch (Exception e) {
            System.err.println("Erro no init do EtapaMB");
        }
    }
   
    public void atualizarTabela() {
        try {

            EtapaIFachada ifach = new EtapaFachada();
            setLsetapa(ifach.findEtapa());


        } catch (Exception e) {
            System.err.println("Erro no atualizarTabela");
        }
    }

    
    public void buscar() {
        try {
            
            EtapaIFachada ifach = new EtapaFachada();
            setLsetapa(ifach.findEtapa());
            
        } catch (Exception e) {
            System.err.println("Erron no método buscar");
            e.printStackTrace();
        }
    }
    
    public void excluir() {
        try {

            IFachada ifach = new Fachada();

            Etapa etapa = getEtapaselecionada();

            ifach.alterar(etapa);

            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, MessageBundleLoader.getMessage("msgExcluidoSucesso"), ""));
            atualizarTabela();

        } catch (Exception e) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, MessageBundleLoader.getMessage("msgexclusaoErro"), ""));
        }

    }

    public String editar() {
        try {
           return "ETAPAEDIT";
        } catch (Exception e) {
           return null;
        }
    }
   
    public void visualizar(Etapa etapa) {
        try {

            etapaselecionada = etapa;

            setStrdescricao(etapa.getDescricao());
            setStrdepartamento(etapa.getDepartamento().getDescricao());
            setStrstatus(etapaselecionada.getStatus().getDescricao());
            setStrdtcriacao(etapaselecionada.getDtcriacao());
            buscarProcessos();

        } catch (Exception e) {
            System.err.println("Erro no visualizar");
        }
    }
    
    public void selecionarRegistro(Etapa etapa) {
        try {

            setEtapaselecionada(etapa);

        } catch (Exception e) {
            System.err.println("Erro no metodo selecionarRegistro");
        }

    }
    
    public void buscarProcessos() {
        try {
                        
           lsprocessoadd = etapaselecionada.getLsprocesso();

        } catch (Exception e) {
            System.err.println("Erro no metodo buscarProcessos");
            e.printStackTrace();
        }
    }
    
    public String strStatusLabel(int st) {
        return MessageBundleLoader.getMessage(StatusAux.getStatusLabel(st));
    }
    
    public String strStatusProcessoLabel(int st) {
        return MessageBundleLoader.getMessage(ProcessoAux.getStatusLabel(st));
    }

    /**
     * @return the lsetapa
     */
    public List<Etapa> getLsetapa() {
        return lsetapa;
    }

    /**
     * @param lsetapa the lsetapa to set
     */
    public void setLsetapa(List<Etapa> lsetapa) {
        this.lsetapa = lsetapa;
    }

    /**
     * @return the etapaselecionada
     */
    public Etapa getEtapaselecionada() {
        return etapaselecionada;
    }

    /**
     * @param etapaselecionada the etapaselecionada to set
     */
    public void setEtapaselecionada(Etapa etapaselecionada) {
        this.etapaselecionada = etapaselecionada;
    }

    /**
     * @return the busca
     */
    public String getBusca() {
        return busca;
    }

    /**
     * @param busca the busca to set
     */
    public void setBusca(String busca) {
        this.busca = busca;
    }

    /**
     * @return the strstatus
     */
    public String getStrstatus() {
        return strstatus;
    }

    /**
     * @param strstatus the strstatus to set
     */
    public void setStrstatus(String strstatus) {
        this.strstatus = strstatus;
    }

    /**
     * @return the strdepartamento
     */
    public String getStrdepartamento() {
        return strdepartamento;
    }

    /**
     * @param strdepartamento the strdepartamento to set
     */
    public void setStrdepartamento(String strdepartamento) {
        this.strdepartamento = strdepartamento;
    }

    /**
     * @return the strprocesso
     */
    public String getStrprocesso() {
        return strprocesso;
    }

    /**
     * @param strprocesso the strprocesso to set
     */
    public void setStrprocesso(String strprocesso) {
        this.strprocesso = strprocesso;
    }

    /**
     * @return the strdtcriacao
     */
    public Date getStrdtcriacao() {
        return strdtcriacao;
    }

    /**
     * @param strdtcriacao the strdtcriacao to set
     */
    public void setStrdtcriacao(Date strdtcriacao) {
        this.strdtcriacao = strdtcriacao;
    }

    /**
     * @return the strdescricao
     */
    public String getStrdescricao() {
        return strdescricao;
    }

    /**
     * @param strdescricao the strdescricao to set
     */
    public void setStrdescricao(String strdescricao) {
        this.strdescricao = strdescricao;
    }

    /**
     * @return the lsprocessoadd
     */
    public List<Processo> getLsprocessoadd() {
        return lsprocessoadd;
    }

    /**
     * @param lsprocessoadd the lsprocessoadd to set
     */
    public void setLsprocessoadd(List<Processo> lsprocessoadd) {
        this.lsprocessoadd = lsprocessoadd;
    }

}
